package com.fanshuai.tree.quadtree;

import java.util.List;

/**
 * 四叉树规范
 */
public interface IQuadTree {
    /**
     * 添加坐标点
     * @param x
     * @param y
     */
    void add(long x, long y);

    /**
     * 矩形空间下的坐标点数量
     * @param rect
     * @return
     */
    int count(Rect rect);

    /**
     * 矩形空间下的坐标点
     * @param rect
     * @return
     */
    List<Point> points(Rect rect);

    /**
     * 以(x,y)为原点，radius为半径的圆内部的点
     * @param x
     * @param y
     * @param radius
     * @return
     */
    List<Point> points(long x, long y, double radius);

    /**
     * 全部坐标点
     * @return
     */
    List<Point> getPoints();

    /**
     * 距离(x,y)最近的k个点
     * @param k
     * @param x
     * @param y
     * @return
     */
    List<Point> kNearestNeighbors(int k, long x, long y);
}
